既存のCloudFormationテンプレートファイルをAWS CDKに移行してみた
どーもsutoです。
過去にCloudFormationで作成したテンプレートファイルをAWS CDKのプロジェクトとして管理するための移行方法についてご紹介します。とは言っても、コードを書き直すのではなく、CDKコマンドでスタック作成するようにテンプレートファイルをCDKプロジェクトの管理下に置くための手順です。
前提条件
- ローカルPCにDCK CLIがインストールされている(未実施の方は以下のリンクを参考)
- 検証環境
- OS:Mac
- 使用言語:Python3.7.3
- CDK CLI:1.74.0
- 事前準備として、「migration」というプロジェクト名でCDK環境を作っておきます
mkdir migration && cd migration cdk init migration --language python source .venv/bin/activate
実際にやってみた
手順1:cloudformation-includeモジュールのインストール
setup.py
のcloudformation-includeモジュールをインストールするように以下を部分を編集します。
install_requires=[ "aws-cdk.core==1.74.0", "aws_cdk.cloudformation_include", ],
setup.py
を保存したらモジュールのインストールを行います。
pip install -r requirements.txt
手順2:コードを記述
- ここから「migration」フォルダ内の
migration_stack.py
に以下のように追記して保存します。
from aws_cdk import core from aws_cdk import cloudformation_include as cfn_inc class MigrationStack(core.Stack): def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # The code that defines your stack goes here cfnInclude = cfn_inc.CfnInclude( self, id="Template", template_file="migration-bk.yaml", )
- 上記の
migration-bk.yaml
は今回使用する既存テンプレートとなります。- こちらのファイルはプロジェクト名である「migration」フォルダ直下(cdk.jsonと同じ場所)に保存してください。
- ちなみに
migration-bk.yaml
の内容は以下の記事で作成したBackup設定用のテンプレートです。
手順3:デプロイと確認
- ではデプロイを実行して実際にスタックが作成されるか見てみましょう。
(.venv) ~ migration % cdk deploy migration
無事スタックCOMPLETEしました。
まとめ
既存にあるJSONやYAMLのテンプレートファイルをCDKプロジェクト内に組み入れて管理したいときに、わざわざコードを書き直すのは手間だし生産性も良くないので、手っ取り早くcloudformation-includeモジュールを使ってしまうのも1つの手ですね。